package datastructure.sort;

import java.util.Arrays;

/**
 * 选择排序
 * 时间复杂度O(n^2)
 * @author jack.wu
 * @version 1.0
 * @date 2020-03-24
 */
public class SelectSort {

    public static void main(String[] args) {
        int[] array = new int[]{5, 1, 9, -1, 4, 10};
        long startTime = System.currentTimeMillis();
        selectSort(array);
        long endTime = System.currentTimeMillis();
        System.out.println(Arrays.toString(array));
        System.out.println("耗时：" + (endTime - startTime));
    }

    /**
     * 选择排序
     * 每次找到最小
     * @param array
     */
    private static void selectSort(int[] array) {
        for (int i = 0; i < array.length - 1; i++) {
            // 最小数的索引
            int minIndex = i;
            // 最小数
            int min = array[minIndex];
            for (int j = i + 1; j < array.length; j++) {
                if (min > array[j]){
                    minIndex = j;
                    min = array[j];
                }
            }
            if (minIndex != i){
                // 如果最小位置发生了变化  则交换
                array[minIndex] = array[i];
                array[i] = min;
            }
        }
    }
}
